# coding=utf-8

import math


class Math(object):

    def __init__(self):
        pass

    # @staticmethod
    def add(self, x, y):
        return x + y

    @staticmethod
    def add1(x, y):
        return x + y


print(Math().add(5, 6))  # 需要实例对象进行调用
print(Math.add1(4, 5))  # 不需要实例对象可通过类名直接调用


class Car(object):
    color = 'black'
    __name = '奥迪'

    def __init__(self):
        self.car_type = 'SUV'
        self.__license_plate = '沪A88888'
        self.color = 'red'
        self.__name = '宝马'

    def car_attri(self):
        return f'名称:{self.__name}\n颜色:{self.color}\n牌照:{self.__license_plate}\n类型:{self.car_type}'

    @classmethod
    def c_me(cls):
        return cls.color  # 不可以使用实例的属性和方法

    @staticmethod
    def s_me():
        return f'我开着{Car.color}的{Car._Car__name}车'  # 静态方法不可以使用类或者实例的方法和属性

    @staticmethod
    def update_s_me(brand, pailiang):
        return f'这是一款排量为{pailiang}，{brand}牌汽车'

    def __str__(self):
        return f'这是一辆{Car.color}的,牌照为：{self.__license_plate} 的{Car.__name}{self.car_type}类型的汽车'


print(Car._Car__name)  # 奥迪
print(Car().color)  # red
print(Car()._Car__name)  # 宝马
print(Car().car_type)  # SUV
print(Car()._Car__license_plate)  # 沪A88888

print(Car())  # 这是一辆black的,牌照为：沪A88888 的奥迪SUV类型的汽车

print(Car.c_me())  # black
print(Car.s_me())  # 我开着black的奥迪车
print(Car.update_s_me('奥迪', '2.0T'))  # 这是一款排量为2.0T，奥迪牌汽车
print(Car().car_attri())
"""
名称:宝马
颜色:red
牌照:沪A88888
类型:SUV"""
